import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';


// 支付订单实体
@Entity()
export class PayOrder {
    // 订单自增id
    @PrimaryGeneratedColumn()
    id: number;

    // userid 外键
    @Column('varchar', { length: 200, nullable: false })
    userid: string;

    // goodsId 外键
    @Column('int', { nullable: false })
    goodsId: number;

    // 支付类型
    @Column('varchar', { length: 32, nullable: false })
    payType: string;

    // 支付渠道用户, 如微信支付的 openid
    @Column('varchar', { length: 64, nullable: true })
    payChannelUser: string;

    // 订单交易id，泡泡日记端生成唯一交易id
    @Column('varchar', { length: 64, nullable: false })
    transactionId: string;

    // 外部订单号，聚合支付交易id
    @Column('varchar', { length: 64, nullable: false })
    outTradeNo: string;

    // 第三方交易id，微信、支付宝等平台的交易id
    @Column('varchar', { length: 64, nullable: true })
    thirdPartyTransactionId: string;

    // 交易参数，前端和客户端凭借交易参数拉起支付
    @Column('varchar', { length: 2048, nullable: true })
    payParams: string;

    // 订单交易状态
    @Column('varchar', { length: 16, nullable: false })
    status: string;

    // 支付金额， 单位：分
    @Column('int', { nullable: false })
    amount: number;

    // 首次插入时间
    @Column('timestamp', { default: () => 'CURRENT_TIMESTAMP' })
    createTime: Date;

    // 更新时间
    @Column('timestamp', { default: () => 'CURRENT_TIMESTAMP', onUpdate: 'CURRENT_TIMESTAMP' })
    updateTime: Date;

    // 支付时间
    @Column('timestamp', { nullable: true })
    payTime: Date;

    // 退款时间
    @Column('timestamp', { nullable: true })
    refundTime: Date;

    // 关闭时间
    @Column('timestamp', { nullable: true })
    closeTime: Date;
}

